In data services that serve content to clients, caching of appropriate data can provide many benefits. For example, consider a data service that offers content such as movies and television series to subscriber viewers. The interactive items on a user interface by which a user may select content for playback may be composed of various user interface elements such as menus, icons, tiles, text, graphics, images and so forth. Some of these elements may need to be obtained and built from different data sources, with the data having to be shaped and formatted for different device types and client software (application) versions running on those devices. Doing this for each of the many movies and television shows consumes a significant amount of computing resources; however because many users want the same user interface data items, caching can eliminate a great deal of redundant data access and processing.
Pre-population of a cache with likely relevant data is feasible, but leads to other problems. One notable problem is that the source data often changes. For example, the data item representing a piece of content that is being offered at 4:00 pm tomorrow may be placed in a cache, but a news event may occur that changes the regularly scheduled programming at or around that time, whereby such pre-cached data becomes obsolete. Further, other data changes may be made by editors at any time; for example, an editor may decide that an image that ordinarily is used with a television series' data item may be overridden with a more specific image for one particular episode of that series. Another editor may decide to specially showcase two different movies per day on users' main menus, which means that any pre-caching needs to wait for the editor's decision. Still further, movies may be listed under a “most popular” category, which changes from time to time based upon counts of actual user requests for different movies.
In sum, when data items including those composed from combinations of user interface elements are needed, a significant amount of computing resources are used to support on-demand user requests for the items. Pre-building and pre-caching of such data items saves many resources relative to composing such data items on demand, but needs to deal with frequent and sometimes unpredictable changes.